#ifndef __OCL_TYPES_H__
#define __OCL_TYPES_H__

#define NUM_SOUNDS 2

#include <gccore.h>

#define WHITE 0xffff
#define BLACK 0x0000
#define BLUE  0x397b
#define RED   0xf800

//Types
typedef enum {
   CLUB  = 0,
   SPADE = 1,
   HEART = 2,
   DIAMOND = 3
} CARDS_Suit;

typedef enum {
   JACK  = 11,
   QUEEN = 12,
   KING  = 13,
   ACE   = 14
} CARDS_Face;

typedef enum {
   VALID   = 1,
   INVALID = 0
} CARDS_CardState;

typedef struct {
   CARDS_Suit suit;
   int value;
   CARDS_CardState state;
   int screen_loc_x;
   int screen_loc_y;
   int screen_loc_w;
   int screen_loc_h;
} CARDS_Card;

typedef struct {
   int card_count;
   CARDS_Card card[52];
   CARDS_Card discard_pile[52];
} CARDS_Deck;

typedef enum{
	NOTHING,
	HIGH_CARD,
	ONE_PAIR,
	ONE_PAIR_JACKS_OR_BETTER,
	TWO_PAIR,
	THREE_OF_A_KIND,
	STRAIGHT,
	FLUSH,
	FULL_HOUSE,
	FOUR_OF_A_KIND,
	STRAIGHT_FLUSH,
	ROYAL_FLUSH
} CARDS_PokerHandType;

typedef struct {

   //Sounds
   int SOUND_ENABLED;

} CARDS_Ptr;

typedef struct {
   int value;
   int count;
} CARDS_PairType;

typedef struct {
   CARDS_PairType *pair;
   int size;
} CARDS_PairListType;


typedef struct {
   void *xfb;
   GXRModeObj *rmode;
   int SCREEN_WIDTH;
   int SCREEN_HEIGHT;
} VIDEO_Ptr;
      
#endif //__OCL_TYPES_H__
